package com.yonyou.cyxdms.basedata.service.entity.product;

import com.baomidou.mybatisplus.annotation.*;
import com.yonyou.cyx.framework.bean.dto.base.BaseDTO;
import com.yonyou.cyx.function.utils.bean.BeanMapperUtil;
import com.yonyou.cyxdms.framework.bean.entity.base.DMSBasePO;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 定义车辆产品，一个车辆产品表示一类车辆，车辆产品定义即可以由车厂下发，也可以自定义
 * </p>
 *
 * @author renwd
 * @since 2019-01-18
 */
@Data
@TableName("tm_vs_product")
public class VsProductPO extends DMSBasePO<VsProductPO> {

    private static final long serialVersionUID = 1L;

    /**
     * 整车产品_ID
     */
    @TableId(value = "PRODUCT_ID", type = IdType.AUTO)
    private Long productId;


    /**
     * APP_ID
     */
    @TableField("APP_ID")
    private String appId;


    /**
     * 公司代码
     */
    @TableField("COMPANY_CODE")
    private String companyCode;
    /**
     * 所有者代码
     */
    @TableField("OWNER_CODE")
    private String ownerCode;

    /**
     * 所有者的父组织代码（用于二网使用）
     */
    @TableField("OWNER_PAR_CODE")
    private String ownerParCode;

    /**
     * 品牌ID
     */
    @TableField("BRAND_ID")
    private Long brandId;
    /**
     * 车系ID
     */
    @TableField("SERIES_ID")
    private Long seriesId;

    /**
     * 车型ID
     */
    @TableField("MODEL_ID")
    private Long modelId;

    /**
     * 配置_ID
     */
    @TableField("PACKAGE_ID")
    private Long packageId;

    /**
     * 颜色ID
     */
    @TableField("COLOR_ID")
    private Long colorId;

    @TableField("COLOR_CODE")
    private String colorCode;

    @TableField("COLOR_NAME")
    private String colorName;


    /**
     * 产品代码
     */
    @TableField("PRODUCT_CODE")
    private String productCode;
    /**
     * 产品名称
     */
    @TableField("PRODUCT_NAME")
    private String productName;
    /**
     * 产品名称
     */
    @TableField("PRODUCT_DESC")
    private String productDesc;

    /**
     * 数据来源 OEM、店面；1045 厂家维护的为厂家维护；下发后写入 OEM'
     */
    @TableField("DATA_SOURCES")
    private Integer dataSources;

    /**
     * 内饰色
     */
    @TableField("TRIM_COLOR")
    private String trimColor;

    /**
     * 内饰色名称
     */
    @TableField("TRIM_COLOR_NAME")
    private String trimColorName;

    /**
     *  是否可采：是、否 1004 经销商是否可以下订单
     */
    @TableField("IS_PURCHASE")
    private Integer isPurchase;

    /**
     * 是否可销：是、否  1004
     */
    @TableField("IS_SALES")
    private Integer isSales;

    /**
     * 正常，退市
     */
    @TableField("PRODUCT_STATUS")
    private Integer productStatus;

    /**
     * 是，否
     */
    @TableField("IS_VALID")
    private Integer isValid;

    /**
     * 车厂指导价
     */
    @TableField("OEM_DIRECTIVE_PRICE")
    private Double oemDirectivePrice;

    /**
     * 采购单价
     */
    @TableField("PURCHASE_PRICE")
    private Double purchasePrice;

    /**
     * 上市日期
     */
    @TableField("ENTER_DATE")
    private LocalDateTime enterDate;
    /**
     * 退市日期
     */
    @TableField("EXEUNT_DATE")
    private LocalDateTime exeuntDate;

    /**
     * 备注
     */
    @TableField("REMARK")
    private String remark;

    /**
     * 车辆来源：国产车、进口车、平行进口车
     */
    @TableField("VEHICLE_SOURCES")
    private Integer vehicleSources;

    /**
     * 上游数据来源ID
     */
    @TableField("SOURCE_ID")
    private String sourceId;

    @TableField("SOURCE_CHANGED_AT")
    private LocalDateTime sourceChangedAt;

    /**
     * 启用时间
     */
    @TableField("START_DATE")
    private LocalDateTime startDate;

    /**
     * 是否下发
     */
    @TableField("IS_ISSUE")
    private Integer isIssue;
    /**
     * 是否可订购
     */
    @TableField("ORDER_STATUS")
    private Integer orderStatus;

    /**
     * 年款
     */
    @TableField("YEAR_MODEL")
    private Integer yearModel;

    /**
     * 排量
     */
    @TableField("DIS_PLACEMENT")
    private Integer disPlacement;

    /**
     * 排放标准
     */
    @TableField("DISCHARGE_STANDARD")
    private Integer dischargeStandard;

    /**
     * 续航里程
     */
    @TableField("ENDURANCE_MILEAGE")
    private Integer enduranceMileage;

    /**
     * 变速箱
     */
    @TableField("TRANS_MISSION")
    private Integer transMission;

    @TableField("PROJECT_CODE")
    private String projectCode;

    @TableField("SALES_VERSION_NAME")
    private String salesVersionName;

    @TableField("BATTERY_CODE")
    private String batteryCode;

    @TableField("battery_volume")
    private String batteryVolume;

    @TableField("battery_oem")
    private String batteryOem;

    @TableField("power_code")
    private String powerCode;

    @TableField("power_code_desc")
    private String powerCodeDesc;

    @TableField("power_machine_brand")
    private String powerMachineBrand;

    @TableField("DRIVE_STYLE_NAME")
    private String driveStyleName;

    @TableField("year_model_name")
    private String yearModelName;

    @TableField("market_name")
    private String marketName;

    /**
     * 内饰色id
     */
    @TableField("TRIM_COLOR_ID")
    private Long trimColorId;

    /**
     * 选装id
     */
    @TableField("OPTION_ID")
    private Long optionId;

    /**
     * 公告号
     */
    @TableField("notice_no")
    private String noticeNo;

    /**
     * 是否删除(0:未删除1:删除)
     */
    @TableField("IS_DELETED")
    @TableLogic
    private Integer isDeleted;

    @TableField("CREATED_BY")
    private String createdBy;

    @TableField("UPDATED_BY")
    private String updatedBy;

    @TableField("CREATED_AT")
    private LocalDateTime createdAt;

    @TableField("UPDATED_AT")
    private LocalDateTime updatedAt;

    @TableField("send_date")
    private LocalDateTime sendDate;

    @TableField("send_by")
    private String sendBy;

    /** 国补金额 **/
    @TableField("subsidy_amount")
    private BigDecimal subsidyAmount;

    /**
     * 将PO 信息转化为DTO
     *
     * @param dto 需要进行转换的dto
     * @author guorp
     * @since 2018/7/22 0022
     */
    protected <T extends BaseDTO> void transDtoToPo(T dto) {
        BeanMapperUtil.copyProperties(this, dto, "productId");
    }


}
